/**
 * Dep起到发布作用
 * 管理依赖
 */
let uid = 0;
export default class Dep {
  constructor() {
    console.log('我是Dep');
    // 用数组存储订阅者(Watcher实例)
    this.subs = [];
    this.id = uid++;
  }
  // 添加订阅
  addSub(sub) {
    this.subs.push(sub);
  }
  // 添加依赖
  depend() {
    // 全局位置
    if (Dep.target) {
      this.addSub(Dep.target);
    }
  }
  // 通知更新
  notify() {
    console.log('notify了');
    // 浅克隆
    const subs = this.subs.slice();
    // 遍历
    let l = subs.length;
    for (let i = 0; i < l; i++) {
      subs[i].update();
    }
  }
}